<?php  
class CategoryModel extends Model{

	public $table='category';
	
	//自动验证
	public $validate=array(
		array('cat_name','nonull','栏目名不能为空',2,3)
	);

	public function addCategory(){
		if ($this->create()) {

			if ($this->add() && $this->updateCache()) {

				return true;
			}else{

				$this->error="添加失败";
			}
		}
	}
	//编辑栏目
	public function editCategory(){
		if ($this->create()) {
			if ($this->save()) {
				if ($this->updateCache()) {
					return true;
				}
			}
			$this->error="编辑失败";
		}
	}
	// 删除栏目
	public function delCategory(){
		$channels=Data::channelList($this->all(),Q('cid'));//查到所有子级

		$categoryData=array_keys($channels);//取键名

		$categoryData[]=Q('cid');//将自己压入

		$map['cid']=array('IN',$categoryData);//取删除条件

		if(!$this->where($map)->del())return false;//删除栏目

		return $this->updateCache();
	}
	// 更新栏目缓存
	public function updateCache(){

		$data=M('category')->all();

		$data=Data::tree($data,'cat_name');
		
		//定义空数组储存缓存数据
		$cache=array();

		foreach($data as $d){

			$cache[$d['cid']]=$d;
		}

		return S('category',$cache);
	}
	//更新是否显示状态
	public function updateShow(){

		if ($this->save()) {

			if ($this->updateCache()) {
				return true;
			}
		}
		return false;
	}
	/**
	 * 获取下级子栏目
	 * @return [type] [description]
	 */
	public function getCategory(){

		$cid=Q('cid',0,'intval');

		if (!$cid) {

			$this->error="该栏目不存在";

		}else{

			return $this->where("pid=$cid")->all();
		}
	}
}
?>